<?php
/**
 * Создае элемент формы text
 * @author nrnwest@gmail.com
 *
 */
class Arm_Form_Builder_Plugin_Text extends Arm_Form_Builder_Plugin_Abstract
{
    
    /**
     * Вернет тело метода
     * 
     * @return string
     */
    public function getBody()
    {
        $data = $this->getData();
        $serarsh = array();
        $replace = array();
        $serarsh[] = '#name#';
        $replace[] = $this->getNameElement();
        
        $serarsh[] = '#method#';
        $replace[] = $this->getNameMethod();
        
        $serarsh[] = '#maxlength#';
        $replace[] = $data['LENGTH'];
        
        $valueDefault = $data['DEFAULT'];
        $serarsh[] = '#valueDefault#';
        $replace[] = $valueDefault;
        
        $str  = '$#method# = new Zend_Form_Element_Text(\'#name#\');' . "\n";
        $str .= '$#method#->setLabel(Arm_Translate::_(\'Ведите данные\'));'."\n";
        $str .= '$#method#->setDescription(Arm_Translate::_(\'Описание, ведите здесь\'));'."\n";        
            if ($data['NULLABLE'] !== true) {
                $str .= '$#method#->setRequired(true);' . "\n";
            } else {
                $str .= '$#method#->setAllowEmpty(true);' . "\n";
            }
        $str .= '$#method#->addFilter(new Zend_Filter_StripTags());' . "\n";
        $str .= '$#method#->addValidator(new Zend_Validate_StringLength(0, #maxlength#));'."\n";
        $str .= '$#method#->setAttrib(\'maxlength\', #maxlength#);'."\n";
            if ($valueDefault !== null) {
                $str .= '$#method#->setValue(\'#valueDefault#\');' . "\n";
            }
        $str .= 'return $#method#;';
        $str  = str_replace($serarsh, $replace, $str);
        return $str;
    }
    
    /**
     * Прототип метода который создается.
     */
    private function _prototype($label, $description=null)
    {
        /*@var $element Zend_Form_Element_Text */
        $element = $this->_getZendFormElement('text');
        $element->setName($name);
        $element->setRequired(true);
        $element->setAllowEmpty(false);
            if($label === null) {
                $label = Arm_Translate::_('Ведите данные');
            }
        $element->setLabel($label);
        
            if($description !== null) {
                $element->setDescription($description);
            }
        $element->addValidator(new Zend_Validate_StringLength(0, $maxlength));
        $element->setAttrib('maxlength', $maxlength);
        $element->setValue($value);
        return $element;  
    }
    
     /**
     * Вернет коментарий к методу
     * 
     * @return Zend_CodeGenerator_Php_Docblock|array|string
     */
    public function getDocblock()
    {
      
      $str =
      '
#idTableField#
Возвращает элемент формы Zend_Form_Element_Text с именем "#name#".
       
@todo Метод автоматически сгенерирован системой, подкорректируйте его. 
Задайте Типовое значение $label для текущего модуля внутри метода.
       
@return Zend_Form_Element_Text
';
        $data = $this->getData();
        $serarsh = array();
        $replace = array();
        $serarsh[] = '#name#';
        $replace[] = $this->getNameElement();
        
        $serarsh[] = '#idTableField#';
        $replace[] = $this->_getStrIdFieldTable();
        
      return str_replace($serarsh, $replace, $str);
    }
    
    
}